因為我們是使用 private DNS,目前只能使用 Self-managed certificate。雖然可以一年手動更新一次,但如果有想自動化的需求也可以參考 API + Script file。或是我這邊剛好有翻到 SDK 的應用https://cloud.google.com/python/docs/reference/certificatemanager/latest/google.cloud.certificate_manager_v1.types.UpdateCertificateRequest
另外,考量到 Certificate 是否也要 IaC,我這邊有找到官方 Terraform 的範例,但是只有 Google Managed Certificate 才有在官網提供。Self-Managed 要從 Terraform 額外找
resource "google_certificate_manager_certificate" "default" {
name = "self-managed-cert"
description = "Global cert"
scope = "ALL_REGIONS"
self_managed {
pem_certificate = file("test-fixtures/cert.pem")
pem_private_key = file("test-fixtures/private-key.pem")
}
}
關於 certificate IaC 其實有另一個討論的議題,就是他初次 init 要提供 pem_certificate 跟 pem_private_key。但這個憑證每年都要改。如果是從 TF 改了之後重新部署我覺得很不符合 IaC 的邏輯。雖然官方文檔提到 self_managed
是 Option 的,但我實測還是得要塞值給他,不能空著進行 Init。所以我現階段還是採用 Console 建立。如果大家有好的管理方式再麻煩推薦。